本发明公开了一种多受话端回声消除方法。本发明中利用回声滤波器对M路受话端信号进行回声滤波,得到M路滤波后的受话端信号,从送话端信号中减去所述M路滤波后的受话端信号,得到消除受话端回声的系统输出信号;同时利用缓存器缓存所述M路受话端信号,根据每段预设长度内缓存的M路受话端信号计算去相关矩阵,利用去相关矩阵将缓存的所述M路受话端信号分解为M路去相关的受话端信号,根据去相关矩阵、M路去相关的受话端信号和反馈的系统输出信号计算回声滤波器的更新量。本发明的技术方案能支持两个以上的多受话端的情况,并且适用于多受话端信号的相关性可变的情况。
1.一种多受话端回声消除方法,该方法适用于包括M个受话端的通话设备,M为大于或等于2的自然数,其特征在于,该方法包括:利用回声滤波器对M路受话端信号进行回声滤波,得到M路滤波后的受话端信号,从送话端信号中减去所述M路滤波后的受话端信号,得到消除受话端回声的系统输出信号;同时利用缓存器缓存所述M路受话端信号,根据每段预设长度内缓存的M路受话端信号计算去相关矩阵,利用去相关矩阵将缓存的所述M路受话端信号分解为M路去相关的受话端信号,根据去相关矩阵、所述M路去相关的受话端信号和反馈的系统输出信号计算回声滤波器的更新量。
2.根据权利要求1所述的方法,其特征在于,所述根据每段预设长度内缓存的M路受话端信号计算去相关矩阵包括:进行M-1步的迭代运算,迭代的初始输入是由所述缓存的M路受话端信号构成的一个L
D行M列的信号矩阵x
(0)′,其中:x
(0)′=[x
1(0)′x
2(0)′...x
i(0)′...x
M(0)′],
x i ( 0 ) ′ = x i = x i ( 1 ) x i ( 2 ) · · · x i ( L D ) ]]>x
i是缓存的第i路受话端的信号,长度为L
D,L
D是预设时间长度内缓存的数据长度,1≤i≤M;第1步迭代中计算去相关矩阵De
1,
![]()
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="569"/> 其中,相关因数为:
c 1 , j = Σ n = 1 L D x 1 ( 0 ) ′ ( n ) x j ( 0 ) ′ ( n ) Σ n = 1 L D [ x 1 ( 0 ) ′ ( n ) ] 2 , ]]>1
(1)′=x(0)′De1x(1)′=[x1(1)′x2(1)′...xi(1)′...xM(1)′]第i步迭代中计算去相关矩阵Dei,
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="694"/> 其中,相关因数为: c i , j = Σ n = 1 L D x i ( i - 1 ) ′ ( n ) x j ( i - 1 ) ′ ( n ) Σ n = 1 L D [ x i ( i - 1 ) ′ ( n ) ] 2 , ]]>M-1≥i>1,M≥j>i;第i步迭代的运算结果为:x(i)′=x(i-1)′Deix(i)′=[x1(i)′x2(i)′...xi(i)′...xM(i)′]经过M-1步的迭代运算后,得到的最终的去相关矩阵
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="307"/>
3.根据权利要求2所述的方法,其特征在于,所述利用去相关矩阵将缓存的M路受话端信号分解为M路去相关的受话端信号,根据去相关矩阵、M路去相关的受话端信号和反馈的系统输出信号计算回声滤波器的更新量包括:计算x′=xDe,其中,x=[x1x2
...xi
...xM],x′中的M列信号即为最终的M路去相关的受话端信号;计算 Δh i ′ ( l ) = x i ′ ( n - l + 1 ) y ( n ) 1 L D Σ n = 1 L D x i ′ 2 ( n ) , ]]>i=1,2,...MΔhi(l)=DeΔhi′(l)其中,Δhi(l)为与第i路受话端信号对应的回声滤波器的更新量,l表示回声滤波器的更新量的序号,y(n)是反馈的系统输出信号,xi′(n)是M路去相关的受话端信号中的第i路信号的第n个采样数据。
4.根据权利要求1所述的方法,其特征在于,所述利用回声滤波器对M路受话端信号进行回声滤波,得到M路滤波后的受话端信号,从送话端信号中减去所述M路滤波后的受话端信号,得到消除受话端回声的系统输出信号包括:利用缓存器缓存送话端信号和M路受话端的信号,将缓存的每路受话端信号在变换域上分解为S个频带上的受话分频信号,以及将缓存的送话端信号在变换域上分解为S个频带上的送话分频信号,其中S为大于或等于2的自然数;在所述S个频带中的每个频带上,利用回声滤波器对该频带上的M个受话分频信号进行回声滤波,得到该频带上的M个滤波后的受话分频信号;从该频带上的送话分频信号减去该频带上的M个滤波后的受话分频信号,得到该频带上的消除回声的送话分频信号;对S个频带上的消除回声的送话分频信号进行频时综合处理得到消除受话端回声的系统输出信号。
5.根据权利要求4所述的方法,其特征在于,所述根据每段预设长度内缓存的M路受话端信号计算去相关矩阵,以及所述利用去相关矩阵将缓存的所述M路受话端信号分解为M路去相关的受话端信号,根据去相关矩阵、M路去相关的受话端信号和反馈的系统输出信号计算回声滤波器的更新量包括:将缓存的每路受话端信号在变换域上分解为S个频带上的受话分频信号后,在所述S个频带中的每个频带上,根据本频带的M路受话分频信号计算本频带的去相关矩阵,利用本频带的去相关矩阵将本频带的M路受话分频分解为本频带的M路去相关的受话分频信号,根据去相关矩阵、本频带的M路去相关的受话分频信号和反馈的本频带的消除回声的送话分频信号计算本频带的回声滤波器的更新量。
6.根据权利要求5所述的方法,其特征在于,所述在所述S个频带中的每个频带上,根据本频带的M路受话分频信号计算本频带的去相关矩阵,具体为:对于第k个频带,1≤k≤S,进行M-1步的迭代运算,迭代的初始输入是一个1行M列的信号矩阵X(0)′(k),其中:X(0)′(k)=[X1(0)′(k)X2(0)′(k)...Xi(0)′(k)...XM(0)′(k)]Xi(0)′(k)=Xi(k),i=1,2,...MXi(k)是第i路受话端信号在第k个频带上的受话分频信号;第1步迭代中计算去相关矩阵De(1)(k),
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/> 其中,相关因数为: c 1 , j ( k ) = Σ l = - L w l = L w | X 1 ( 0 ) ′ ( mod ( k + l , L D ) ) 2 | Σ l = - L w l = L w X 1 ( 0 ) ′ ( mod ( k + l , L D ) ) conj ( X j ( 0 ) ′ ( mod ( k + l , L d ) ) ) , ]]>1w是指定长度,Lw取3~10中的数值,conj是取共轭运算,mod是取模运算,LD是预设时间长度内缓存数据长度;则第1步迭代的运算结果为:X′(1)(k)=X′(0)(k)De(1)(k)X(1)′(k)=[X1(1)′(k)X2(1)′(k)...Xi(1)′(k)...XM(1)′(k)]第i步迭代中计算去相关矩阵De(i)(k),
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/> 其中,相关因数为: c i , j ( k ) = Σ l = - L w l = L w | X i ( i ) ′ ( mod ( k + l , L D ) ) 2 | Σ l = - L w l = L w X i ( i ) ′ ( mod ( k + l , L D ) ) conj ( X j ( i ) ′ ( mod ( k + l , L D ) ) ) , ]]>1i第i步迭代的运算结果为:X′(i)(k)=X′(i-1)(k)De(i)(k)X(i)′(k)=[X1(i)′(k)X2(i)′(k)...Xi(i)′(k)...XM(i)′(k)]经过M-1步的迭代运算后,得到的第k个频带的最终的去相关矩阵 De ( k ) = Π i = 1 M - 1 De ( i ) ( k ) . ]]>
7.根据权利要求6所述的方法,其特征在于,所述利用本频带的去相关矩阵将本频带的M路受话分频分解为本频带的M路去相关的受话分频信号,根据去相关矩阵、本频带的M路去相关的受话分频信号和反馈的本频带的消除回声的送话分频信号计算本频带的回声滤波器的更新量,具体为:计算X′(k)=X(k)De(k),其中,X(k)=[X1(k)X2(k)...Xi(k)...XM(k)],X′(k)中的M个信号即为第k个频带的M路去相关的受话分频信号;计算 ΔH i ′ ( k ) = X i ′ ( k ) Y ( k ) 1 2 L w + 1 Σ l = - L w l = L w | X i ′ ( mod ( k + l , L D ) ) 2 | , ]]>i=1,2,...MΔHi(k)=De(k)ΔHi′(k);其中,ΔHi(k)为第k个频带上的第i路受话端分频信号对应的回声滤波器的更新量,Y(k)是反馈的第k个频带上的消除回声的送话分频信号。
8.根据权利要求2所述的方法,其特征在于,所述利用回声滤波器对M路受话端信号进行回声滤波,得到M路滤波后的受话端信号,从送话端信号中减去所述M路滤波后的受话端信号,得到消除受话端回声的系统输出信号包括:利用缓存器缓存送话端信号和M路受话端的信号,将缓存的每路受话端信号在变换域上分解为S个频带上的受话分频信号,以及将缓存的送话端信号在变换域上分解为S个频带上的送话分频信号,其中S为大于或等于2的自然数;在所述S个频带中的每个频带上,利用回声滤波器对该频带上的M个受话分频信号进行回声滤波,得到该频带上的M个滤波后的受话分频信号;从该频带上的送话分频信号减去该频带上的M个滤波后的受话分频信号,得到该频带上的消除回声的送话分频信号;对S个频带上的消除回声的送话分频信号进行频时综合处理得到消除受话端回声的系统输出信号。
9.根据权利要求8所述的方法,其特征在于,所述利用去相关矩阵将缓存的M路受话端信号分解为M路去相关的受话端信号,根据去相关矩阵、所述M路去相关的受话端信号和反馈的系统输出信号计算回声滤波器的更新量包括:将缓存的每路受话端信号在变换域上分解为S个频带上的受话分频信号后,在所述S个频带中的每个频带上,利用去相关矩阵将本频带的M路受话分频分解为本频带的M路去相关的受话分频信号,根据去相关矩阵、本频带的M路去相关的受话分频信号和反馈的本频带的消除回声的送话分频信号计算本频带的回声滤波器的更新量。
10.根据权利要求9所述的方法,其特征在于,所述在所述S个频带中的每个频带上,利用去相关矩阵将本频带的M路受话分频分解为本频带的M路去相关的受话分频信号,根据去相关矩阵、所述M路去相关的受话端信号和反馈的系统输出信号计算回声滤波器的更新量,具体为:对于第k个频带,1≤k≤S,计算矩阵X′(k)=X(k)De;其中,X(k)=[X1(k)X2(k)...Xi(k)...XM(k)],Xi(k)是第i路受话端信号在第k个频带上的受话分频信号;X′(k)中的M个信号即为最终的第k个频带上的M路去相关的受话分频信号;计算 ΔH i ′ ( k ) = X i ′ ( k ) Y ( k ) 1 2 L w + 1 Σ l = - L w l = L w | X i ′ ( mod ( k + l , L D ) ) 2 | , ]]>i=1,2,...MΔHi(k)=DeΔHi′(k);其中,ΔHi(k)为第k个频带上的第i路受话端分频信号对应的回声滤波器的更新量,Y(k)是反馈的第k个频带上的消除回声的送话分频信号。技术领域
本发明涉及领域语音通讯技术领域,特别涉及一种多受话端回声消除方法。
背景技术
在语音通讯中,受话端信号经过线路反射和声学反射,会串入送话端信号中,并馈送到远端,使远端听到回声。回声会给通话双方造成极大的干扰,影响通话质量,严重时甚至引起啸叫,不仅完全无法通话,还可能伤害通讯设备。为保证通话质量和设备安全,一般会采用自适应回声消除技术来消除语音通讯时的回声。自适应的寻找合适的回声滤波器,计算出回声信号,从而将回声信号从送话端信号中消去,避免回声干扰语音通讯。常规的单通道回声消除技术适用于单个受话端的情况。但是近年来由于通信技术的发展,出现了立体声语音通讯乃至更多受话端的语音通讯,因此需要相适应的多通道回声消除技术。每个受话通道对应着一个回声抵消器,计算该路受话端信号对应的回声并从送话端信号中消去,多个回声抵消器联合工作,消除多个受话端引起的回声。多受话端回声消除的难点在于,多路受话端信号之间并不独立,存在相关性,寻找某一通道受话端信号对应的回声抵消器时,会受到其他受话端信号的干扰,搜寻速度慢,当回声环境发生变化时不能及时跟踪。因此改善多通道回声消除性能的关键在于去除原始受话端信号之间的相关性。以往的多路受话端信号去相关性技术多采用预失真的方法,该方法在受话端信号中加入一些失真信号,以降低受话端信号之间的相关性,降低回声抵消器的相互干扰。这样的方式需要在受话端增加额外的预失真硬件和线路,也会降低受话声音质量和听感,特别当原始受话端信号间具有高度相似性时,需要较多的预失真,这会明显降低受话端信号回放时的音质。为了使受话回放音质不受影响,需要对受话端信号进行无失真去相关。但现有的无失真去相关技术只是将两路受话器信号经过简单的和差形成相关性较低的新的受话端信号。这样的方法适用于环境简单的稳定不变的立体声语音通讯,不能适用于相关性可变的情况,也不能支持两个以上多受话通道相关的情况。
发明内容
本发明提供了一种多受话端回声消除方法,本发明的技术方案能够在不影响受话端回放音质的前提下,有效去除送话端信号中的由两个或两个以上的多受话端引起的回声,并且适用于多受话端信号的相关性可变的情况。为达到上述目的,本发明的技术方案是这样实现的:本发明公开了一种多受话端回声消除方法,该方法适用于包括M个受话端的通话设备,M为大于或等于2的自然数,该方法包括:利用回声滤波器对M路受话端信号进行回声滤波,得到M路滤波后的受话端信号,从送话端信号中减去所述M路滤波后的受话端信号,得到消除受话端回声的系统输出信号;同时利用缓存器缓存所述M路受话端信号,根据每段预设长度内缓存的M路受话端信号计算去相关矩阵,利用去相关矩阵将缓存的所述M路受话端信号分解为M路去相关的受话端信号,根据去相关矩阵、所述M路去相关的受话端信号和反馈的系统输出信号计算回声滤波器的更新量。本发明实施例的有益效果是:本发明通过利用回声滤波器对M路受话端信号进行回声滤波,从送话端信号中减去所述M路滤波后的受话端信号,以得到消除受话端回声的系统输出信号,能够有效去除送话端信号中的由两个或多于两个受话端引起的回声;同时本发明通过利用每段预设时间长度内缓存的M路受话端信号计算去相关矩阵,利用去相关矩阵来进行受话端信号的去相关分解,而不需要像现有技术那样采用预失真的方式来降低受话端信号之间的相关性,因此不会影响受话端回放音质,并且这种实时计算回声滤波器更新量的方式能适用于多受话端信号的相关性可变的情况。
附图说明
图1本发明实施例中的实现一种多受话端回声消除方法的系统结构图;图2是本发明实施例中的实现时域多受话端回声消除方法的系统结构图;图3是本发明实施例中多受话端信号进行去相关分解运算的逻辑示意图;图4是本发明实施例中的实现变换域多受话端回声消除方法的系统结构图;图5是本发明实施例中的实现时域和变换域混合的多受话端回声消除方法的系统结构图。
具体实施方式
本发明的核心思想是:利用回声滤波器对M路受话端信号进行回声滤波,得到M路滤波后的受话端信号,从送话端信号中减去所述M路滤波后的受话端信号,得到消除受话端回声的系统输出信号;并且对所述回声滤波器的更新量进行实时更新,具体为利用缓存器缓存的所述M路受话端信号对所述回声滤波器的更新量进行如下计算:根据每段预设时间长度内缓存的M路受话端信号计算去相关矩阵,利用去相关矩阵将缓存的M路受话端信号分解为M路去相关的受话端信号,根据去相关矩阵、所述M路去相关的受话端信号和反馈的系统输出信号计算回声滤波器的更新量。为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。图1本发明实施例中的实现一种多受话端回声消除方法的系统结构图。如图1所示,该系统包括:回声滤波单元101和滤波控制单元102,其特征在于,所述回声滤波单元101,用于接收送话端信号和M路受话端信号,在滤波控制单元102输出的更新量的控制下对M路受话端信号进行回声滤波,得到M路滤波后的受话端信号,从送话端信号中减去所述M路滤波后的受话端信号,得到消除受话端回声的系统输出信号;所述滤波控制单元102,用于缓存M路受话端的信号,每缓存预设长度的M路受话端信号后,根据缓存的M路受话端信号计算去相关矩阵,利用去相关矩阵将缓存的M路受话端信号分解为M路去相关的受话端信号,根据去相关矩阵、所述M路去相关的受话端信号和从回声滤波单元反馈的系统输出信号计算回声滤波器的更新量,并输出给回声滤波单元101。本发明中的多受话端回声消除系统连接在送话器和受话器之间,送话器信号d和M个受话器信号x=[x1,x2,...,xM]是系统输入,通过实时比较受话器信号和送话器信号,用多个自适应滤波器模拟各个受话器信号的回声路径,构建准确的回声路径滤波器和回声信号,将回声信号从送话器信号中消去,并将去掉回声的信号送到语音通讯的远端。该系统可以有时域处理模式,也有频域或者其他变换域处理模式,以及时频域混合处理模式。下面分别进行介绍。图2是本发明实施例中的实现时域多受话端回声消除方法的系统结构图。如图2所示的系统可以用于多受话通道的回声抵消。在回声抵消中,估计回声路径时,为了避免受话通道信号之间的干扰,将原始受话端信号经由去相关矩阵分解为相关性低的受话端信号,送入回声滤波器中估计回声信号和更新回声滤波器。去相关矩阵的系数由原始受话端信号之间的相关性决定。去相关矩阵是实时计算的,受话端信号的相关性发生变化时,去相关矩阵也会相应调整,保证良好的去相关分解效果,使回声抵消器正常工作,保证回声抵消效果。参见图2,在该时域多受话端回声消除系统中:回声滤波单元包括:M个回声滤波器和M个串联的减法器;所述滤波控制单元包括:M个预设长度的缓存器、一个去相关矩阵计算模块和一个滤波控制模块;该滤波控制模块包括:一个信号去相关分解模块和一个滤波控制器;M个回声滤波器,用于一一对应地接收所述的M路受话端信号,在滤波控制单元输出的更新量的控制下对M路受话端信号分别进行回声滤波,得到M路滤波后的受话端信号,将M路滤波后的受话端信号一一对应地输出到M个串联的减法器;所述M个串联的减法器中的第一个减法器(图2中为减法器M)接收送话器信号,将送话器信号与所接收的滤波后的受话端信号相减后输出给下一级减法器;后续的减法器将上一级减法器输出的信号与所接收的滤波后的受话端信号相减后输出;最后一个减法器(图2中为减法器1)的输出为消除受话端回声的系统输出信号;M个预设长度的缓存器,用于将输入数据存储形成数据帧,这里用于分别缓存所述M路受话端信号,并将缓存的M路预设长度的受话端信号输出给去相关矩阵计算模块和信号去相关分解模块;去相关矩阵计算模块,用于根据所接收的M路预设长度的受话端信号计算去相关矩阵,将去相关矩阵输出给信号去相关分解模块和滤波控制器;信号去相关分解模块,用于根据所接收的去相关矩阵,将所接收的M路预设长度的受话端信号分解为M路去相关的受话端信号后输出给滤波控制器;滤波控制器,用于根据所接收的去相关矩阵、M路去相关的受话端信号和从第M个减法器输出反馈的系统输出信号计算M个回声滤波器的更新量,并将更新量输出给对应的回声滤波器。在图2中,回声滤波器实现回声滤波,缓存器将输入数据储存形成数据帧,滤波控制单元计算出当前回声滤波器的偏差,更新回声滤波器。受话端信号经回声滤波器后形成回声估计信号,从送话端信号中减去,得到当前系统输出。当前系统输出和受话端信号经滤波控制单元,判断回声滤波器是否需要更新,如果需要更新,则计算出回声滤波器的更新量,输出到回声滤波器进行更新。下面具体说明图2中的各个部分的计算方法。回声滤波器的计算式为:echo=x*h;减法器部分的计算式为:y=d-echo其中,送话器信号d是和M个受话器信号x=[x1,x2,...,xi,...,xM]是系统输入,h是滤波器函数,y是系统输出。在缓存器中,设当前时间点为n,则形成的数据帧为x(n-LD+1),....x(n),LD为缓存器的长度。首先以两个受话端为例(即M=2),对去相关矩阵计算模块、信号去相关分解模块和滤波控制器中的计算进行说明,两路受话端信号为x1,x2,两路信号有高度相关性:在去相关矩阵计算模块中,去相关矩阵的导出可以用如下方式计算,先计算x1,x2,的相关因数c1,2,去相关矩阵De为: De = 1 - c 1,2 0 1 ]]> 相关因数的计算公式为: c 1,2 = Σ n = 1 L D x 1 ( n ) x 2 ( n ) Σ n = 1 L D x 1 2 ( n ) , ]]>其中LD数据缓存器的长度。信号去相关分解模块中的去相关分解结果为:x′=xDe;即x1′=x1,x2′=x2-c1,2x1。x1′与x2′的相关性低于x1,x2的相关性,这样在信号去相关分解模块中就实现了受话端信号的去相关分解。滤波控制器中,回声滤波器更新量的计算为: Δh i ′ ( l ) = x i ′ ( n - l + 1 ) y ( n ) 1 L D Σ n = 1 L D x i ′ 2 ( n ) , i = 1,2 ]]> Δhi(l)=DeΔhi′(l)其中,Δhi(l)为与第i路受话端信号对应的回声滤波器的更新量,l表示回声滤波器的更新量的序号,y(n)是反馈的系统输出信号,xi′(n)是M路去相关的受话端信号中的第i路信号的第n个采样数据。上述的去相关分解方式可以扩展到M路(M>2)的受话端信号情况,在M路受话端信号情况下,去相关分解可以分M-1步进行,每一步降低某一个通道与其他通道的相关性,最多经过M-1步运算,就可以实现所有通道的去相关分解,也可以得到De。设迭代初始的输入是一个LD行M列的信号矩阵为x(0)′(代表M个通道,LD采样点的信号)。第一步迭代的输出为信号矩阵x(1)′和矩阵De1,以此类推,第i步的输入为x(i-1)′,输出为信号x(i)′和矩阵Dei,最后第M-1步迭代后,得到输出信号矩阵x(M-1)′和矩阵DeM-1,则x(M-1)′就是去相关分解信号,而综合De1,....,DeM-1可以得到分解矩阵De。图3是本发明实施例中多受话端信号进行去相关分解运算的逻辑示意图。参考图3,进行M-1步的迭代运算的过程如下:迭代的初始输入是由所述缓存的M路受话端信号构成的一个LD行M列的信号矩阵x(0)′,其中:x(0)′=[x1(0)′x2(0)′...xi(0)′...xM(0)′], x i ( 0 ) ′ = x i = x i ( 1 ) x i ( 2 ) · · · x i ( L D ) ]]>xi是在所述预设时间长度内缓存的第i路受话端的信号,长度为LD,1≤i≤M;第1步,降低第1通道与其他通道的相关性,计算第一通道x1(0)′与其他通道x2(0)′,......xM(0)′之间的相关因数c1,2,....c1,M;则第一步迭代中计算去相关矩阵De1,
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="569"/> 其中,相关因数的计算为: c 1 , j = Σ n = 1 L D x 1 ( 0 ) ′ ( n ) x j ( 0 ) ′ ( n ) Σ n = 1 L D [ x 1 ( 0 ) ′ ( n ) ] 2 , ]]>1(1)′=x(0)′De1x(1)′=[x1(1)′x2(1)′...xi(1)′...xM(1)′]以此类推,第i步,计算xi(i)′和xi+1(i)′,xi+2(i)′,...xM(i)′之间的相关因数ci,i+1,....ci,M;则第i步迭代中计算去相关矩阵Dei,
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="694"/> 其中,相关因数为: c i , j = Σ n = 1 L D x i ( i - 1 ) ′ ( n ) x j ( i - 1 ) ′ ( n ) Σ n = 1 L D [ x i ( i - 1 ) ′ ( n ) ] 2 , ]]>M-1≥i>1,M≥j>i;第i步迭代的运算结果为:x(i)′=x(i-1)′Deix(i)′=[x1(i)′x2(i)′...xi(i)′...xM(i)′]经过M-1步的迭代运算后,得到的最终的去相关矩阵
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="303"/>利用该去相关矩阵De将缓存的M路受话端信号分解为M路去相关的信号的计算为:x′=xDe;其中,x=[x1x2...xi...xM],x′中的M列信号即为最终的M路去相关的受话端信号。这里,其实有x′=x(M-1)′=x(M-2)′DeM-1。根据去相关矩阵、M路去相关的信号和反馈的系统输出信号计算回声滤波器的更新量具体为:计算 Δh i ′ ( l ) = x i ′ ( n - l + 1 ) y ( n ) 1 L D Σ n = 1 L D x i ′ 2 ( n ) , i = 1,2 , . . . M ]]>Δhi(l)=DeΔhi′(l)其中,Δhi(l)为与第i路受话端信号对应的回声滤波器的更新量,l表示回声滤波器的更新量的序号,y(n)是反馈的系统输出信号,xi′(n)是M路去相关的受话端信号中的第i路信号的第n个采样数据。图4是本发明实施例中的实现变换域多受话端回声消除方法的系统结构图。参见图4,在该变换域多受话端回声消除系统中:回声滤波单元包括:一个送话端缓存器、一个送话端频带分解模块、S个回声滤波器组、S个减法器组和一个频带综合模块,每个减法器组由串联的M个减法器组成,每个回声滤波器组包含M个回声滤波器;滤波控制单元包括:M个受话端缓存器、M个受话端频带分解模块、S个去相关矩阵计算模块和S个滤波控制模块;每个滤波控制模块包括:一个信号去相关分解模块和一个滤波控制器;其中:送话端缓存器,用于缓存送话端信号,每缓存预设长度的送话端信号后,输出给送话端频带分解模块;送话端频带分解模块,用于将来自送话端缓存器的每段预设长度的送话端信号在变换域上分解为S个频带上的送话分频信号后,分别输出到S个减法器组;M个受话端缓存器与M个受话端信号一一对应,M个受话端频带分解模块与M个受话端缓存器一一对应;每个受话端缓存器,用于缓存对应的受话端信号,每缓存预设长度的受话端信号后,输出给对应的受话端频带分解模块;每个受话端频带分解模块,用于将来自对应受话端缓存器的每段预设长度的受话端信号在变换域上分解为S个频带上的受话分频信号后,分别输出到S个回声滤波器组、S个去相关矩阵计算模块以及S个滤波控制模块中的信号去相关分解模块;S个去相关矩阵计算模块、S个滤波控制模块、S个回声滤波器组和S个减法器组都与S个频带一一对应;每个去相关矩阵计算模块,用于根据所接收的M个受话分频信号计算去相关矩阵,将去相关矩阵输出给对应的信号去相关分解模块和滤波控制器;每个信号去相关分解模块,用于根据所接收的去相关矩阵,将所接收的M个受话分频信号分解为M路去相关的受话分频信号后输出给对应的滤波控制器;每个滤波控制器,用于根据所接收的去相关矩阵、去M路相关的受话分频信号和从对应的减法器组反馈的消除回声的送话分频信号计算对应回声滤波器的更新量,并将更新量输出给该对应的回声滤波器组;每个回声滤波器组,用于在对应滤波控制模块中的滤波控制器输出的更新量的控制下,对所接收的M个受话分频信号进行回声滤波,输出M个滤波后的受话分频信号到对应的减法器组;每个减法器组,用于接收对应频带上的送话分频信号和M个滤波后的受话分频信号,从送话分频信号依次减去M个滤波后的受话分频信号,得到消除回声的送话分频信号后输出给频带综合模块,同时反馈给对应滤波控制模块中的滤波控制器;频带综合模块,用于对来自S个减法器组的S个频带上的消除回声的送话分频信号进行频时综合处理得到系统输出信号。由上述可见。在变换域(如频率域)设信号可以分为S个频带,则每路受话端信号可以分解为S个分频信号,在每个频带内都可以独立计算去相关矩阵De1,...,DeS和分解信号,以及滤波器更新量。下面具体说明图4中的各个部分的计算方法。时域信号进入数据缓存器,形成数据帧[xi(n-LD+1),...,xi(n-1),xi(n)],数据帧长度为LD,则送话数据帧为[d(n-LD+1),...,d(n-1),d(n)];受话数据帧为[xi(n-LD+1),...,xi(n-1),xi(n)],1≤i≤M,M为受话通道数目。数据帧进入频带分解模块,生成分频信号:对于第i路受话端信号数据帧得到长为LD的受话分频信号Xi(0),Xi(Ws),....,Xi(2π-Ws),1≤i≤M;以及送话分频信号为D(0),D(Ws),....,D(2π-Ws),其中
ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="196"/>分频可以采用多种方式,如傅立叶变换,子带,余弦变换,或者其他变换域算法。以傅立叶变换为例,计算过程为 X i ( k ) = Σ t = 1 L D x i ( n - L D + t ) exp ( - j W s tk ) , 0 < k ≤ L D ]]> D ( k ) = Σ t = 1 L D d ( n - L d + t ) exp ( - j W s tk ) , 0 < k ≤ L D ]]> 在回声滤波器中:受话分频信号进入回声滤波器,生成回声信号,如下式: Echo ( k ) = Σ i = 1 L D X i ( k ) H i ( k ) ]]> 送话分频信号与回声分频信号相减,得到去回声信号:Y(k)=D(k)-Echo(k)频带综合模块进行频时综合得到系统输出,如下式,其中频时综合仍以傅立叶变换为例: y ( n ) = Σ k = 1 L D Y ( k ) exp ( j W s nk ) ]]> 在每个去相关矩阵计算模块中独立计算本频带的去相关矩阵,当有两个受话端时(即M=2),以第k个频带为例,其去相关矩阵De(k)为: De ( k ) = 1 - c 1,2 ( k ) 0 1 ]]> 其中c1,2(k)是X1(k)和X2(k)的相关因数,计算方式为: c 1,2 ( k ) = Σ l = - L w l = L w | X 1 ( mod ( k + l , L D ) ) 2 | Σ l = - L w l = L w X 2 ( mod ( k + l , L D ) ) conj ( X 1 ( mod ( k + l , L d ) ) ) ]]> 其中,IW为指定长度,一般取3~10中的数值,conj是取共轭运算,mod是取模运算。则在信号去相关分解模块中计算:X′(k)=X(k)De(k);其中,X(k)=[,X1(k)X2(k)],X′(k)中的2个信号即为第k个频带的去相关的2个受话分频信号。去相关的2个受话分频信号进入滤波控制器,计算得到第i个受话端信号和第k个频带的滤波器更新量为:ΔHi(k)=De(k)ΔHi′(k)其中, ΔH i ′ ( k ) = X i ′ ( k ) Y ( k ) 1 2 L w + 1 Σ l = - L w l = L w | X i ′ ( mod ( k + l , L D ) ) 2 | , ]]>i=1,2在M(M>2)路受话端信号情况下,对于每一个频带,去相关分解都可以用迭代运算实现,最多经过M-1步迭代,就可以实现所有M个通道的去相关分解并得到去相关矩阵,步骤如下:对于第k个频带,迭代初始输入为1行M列的信号矩阵X(0)′(k),每一步迭代可以得到一个1行M列信号矩阵X(i)′(k)和分解矩阵De(i)(k)。M为受话通道数。则对于第k个频带,1≤k≤S,进行M-1步的迭代运算的过程如下:迭代的初始输入是一个1行M列的信号矩阵X(0)′(k),其中:X(0)′(k)=[X1(0)′(k)X2(0)′(k)...Xi(0)′(k)...XM(0)′(k)]Xi(0)′(k)=Xi(k),i=1,2,...MXi(k)是第i路受话端信号在第k个频带上的受话分频信号;第1步,计算X1(0)(k)与X2(0)(k),...,XM(0)(k)之间的相关因数和去相关子矩阵De(1)(k):第1步迭代中计算去相关矩阵De(1)(k),
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/> 其中, c 1 , j ( k ) = Σ l = - L w l = L w | X 1 ( 0 ) ′ ( mod ( k + l , L D ) ) 2 | Σ l = - L w l = L w X 1 ( 0 ) ′ ( mod ( k + l , L D ) ) conj ( X j ( 0 ) ′ ( mod ( k + l , L d ) ) ) , ]]>1w是指定长度,Lw取3~10中的数值,conj是取共轭运算,mod是取模运算,LD是每段预设时间长度内缓存数据长度;则第1步迭代的运算结果为:X′(1)(k)=X′(0)(k)De(1)(k)X(1)′(k)=[X1(1)′(k)X2(1)′(k)...Xi(1)′(k)...XM(1)′(k)]以此类推,第i步迭代中计算X′i(i)(k)和X′i+1(i)(k),...,X′M(i)(k)之间的相关因数和去相关子矩阵:第i步迭代中计算去相关矩阵De(i)(k),
ntent="drawing" img-format="tif" inline="no" orientation="portrait" wi="700"/> 其中, c i , j ( k ) = Σ l = - L w l = L w | X i ( i ) ′ ( mod ( k + l , L D ) ) 2 | Σ l = - L w l = L w X i ( i ) ′ ( mod ( k + l , L D ) ) conj ( X j ( i ) ′ ( mod ( k + l , L D ) ) ) , ]]>1i第i步迭代的运算结果为:X′(i)(k)=X′(i-1)(k)De(i)(k)X(i)′(k)=[X1(i)′(k)X2(i)′(k)...Xi(i)′(k)...XM(i)′(k)]经过M-1步的迭代运算后,得到的第k个频带的最终的去相关矩阵 De ( k ) = Π i = 1 M - 1 De ( i ) ( k ) ; ]]>在信号去相关分解模块中计算X′(k)=X(k)De(k);其中,X(k)=[X1(k)X2(k)...Xi(k)...XM(k)],X′(k)中的M个信号即为第k个频带的M个去相关的受话分频信号。其实,可以看出X′(k)=X′(M-1)(k)=X′(M-2)(k)De(M-1)(k)。在滤波控制器中计算本频带(第k频带)的回声滤波器的更新量:计算 ΔH i ′ ( k ) = X i ′ ( k ) Y ( k ) 1 2 L w + 1 Σ l = - L w l = L w | X i ′ ( mod ( k + l , L D ) ) 2 | , ]]>i=1,2,...MΔHi(k)=De(k)ΔHi′(k);其中,ΔHi(k)为第k个频带上的第i路受话端分频信号对应的回声滤波器的更新量,Y(k)是反馈的第k个频带上的消除回声的送话分频信号。5图是本发明实施例中的实现时域和变换域混合的多受话端回声消除方法的系统结构图。参见图5,在该混合域的多受话端回声消除系统中:回声滤波单元包括:一个送话端缓存器、一个送话端频带分解模块、S个回声滤波器组、S个减法器组和一个频带综合模块,每个减法器组由串联的M个减法器组成,每个回声滤波器组包含M个回声滤波器;滤波控制单元包括:M个受话端缓存器、一个去相关矩阵计算模块、M个受话端频带分解模块和S个滤波控制模块;每个滤波控制模块包括:一个信号去相关分解模块和一个滤波控制器;其中:送话端缓存器,用于缓存送话端信号,每缓存预设长度的送话端信号后,输出给送话端频带分解模块;送话端频带分解模块,用于将来自送话端缓存器的每段预设长度的送话端信号在变换域上分解为S个频带上的送话分频信号后,分别输出到S个减法器组;M个受话端缓存器与M个受话端信号一一对应,M个受话端频带分解模块与M个受话端缓存器一一对应;每个受话端缓存器,用于缓存对应的受话端信号,每缓存预设长度的受话端信号后,输出给对应的受话端频带分解模块和去相关矩阵计算模块;每个受话端频带分解模块,用于将来对应自受话端缓存器的每段预设长度的受话端信号在变换域上分解为S个频带上的受话分频信号后,分别输出到S个回声滤波器以及S个滤波控制模块中的信号去相关分解模块;去相关矩阵计算模块,用于根据每次所接收的M路预设长度的受话端信号计算去相关矩阵,将去相关矩阵输出给S个滤波控制模块中的信号去相关分解模块和滤波控制器;S个滤波控制模块、S个回声滤波器组和S个减法器组都与S个频带一一对应;每个信号去相关分解模块,用于根据所接收的去相关矩阵,将所接收的M个受话分频信号分解为M路去相关的受话分频信号后输出给对应的滤波控制器;每个滤波控制器,用于根据所接收的去相关矩阵、M路去相关的受话分频信号和从对应的减法器组反馈的消除回声的送话分频信号计算对应回声滤波器的更新量,并将更新量输出给该对应的回声滤波器组;每个回声滤波器组,用于在对应滤波控制模块中的滤波控制器输出的更新量的控制下,对所接收的M个受话分频信号进行回声滤波,输出M个滤波后的受话分频信号到对应的减法器组;每个减法器组,用于接收对应频带上的送话分频信号和M个滤波后的受话分频信号,从送话分频信号依次减去M个滤波后的受话分频信号,得到消除回声的送话分频信号后输出给频带综合模块,同时反馈给对应滤波控制模块中的滤波控制器;频带综合模块,用于对来自S个减法器组的S个频带上的消除回声的送话分频信号进行频时综合处理得到系统输出信号。可见,在图5所示的系统中,去相关矩阵的计算是在时域上完成的,具体同图2中去相关矩阵的计算方式相同,经过M-1步的迭代运算后,得到的最终的时域去相关矩阵De,具体计算过程这里不再复述。而受话端信号的去相关分解是在变换域上完成的,但是使用的是时域去相关矩阵De。即在每个频带上,都利用相同的时域去相关矩阵De将本频带的M路受话分频分解为本频带的M路去相关的受话分频信号,例如:对于第k个频带,1≤k≤S,计算矩阵X′(k)=X(k)De;其中,X(k)=[X1(k)X2(k)...Xi(k)...XM(k)],Xi(k)是第i路受话端信号在第k个频带上的受话分频信号;X′(k)中的M个信号即为最终的第k个频带上的M路去相关的受话分频信号。则回声滤波器的更新量计算为:计算 ΔH i ′ ( k ) = X i ′ ( k ) Y ( k ) 1 2 L w + 1 Σ l = - L w l = L w | X i ′ ( mod ( k + l , L D ) ) 2 | , ]]>i=1,2,...MΔHi(k)=De(k)ΔHi′(k);其中,De为时域上的去相关矩阵,ΔHi(k)为第k个频带上的第i路受话端分频信号对应的回声滤波器的更新量,Y(k)是反馈的第k个频带上的消除回声的送话分频信号。图5所示的混合域结构与图4所示的纯变换域结构相比,简化了去相关矩阵的计算。但是图4所示的变换域结构与图5所示的混合域结构的适用情况有所区别。对于各受话通道信号频率-功率曲线差异较大的情况,适用图4所示的变换域结构,典型如电子游戏场景。因为在这种情况下,各个频带的相关矩阵有较大差异,宜单独计算去相关矩阵和分解。对于各受话通道频率-功率曲线差异较小的情况,适用图5所示的混合结构,典型如立体声通话或3D环绕声通话。因为在这种情况下,各个频带的相关矩阵相近或相同,可以用总分解矩阵进行各个频带的去相关分解。综上所述,本发明的技术方案能够有效去除送话端信号中的由多个受话端引起的回声,并且本发明的技术方案能支持两个以上的多受话端的情况,并且适用于多受话端信号的相关性可变的情况。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。